中间件开发中的 Linux 高级命令
- 将挂载点为
/app的设备内容复制到/opt/update/app.img。
mount | grep -w /app | awk '{print $1}'| xargs -n1 -I dev dd if=dev of=/opt/update/app.img
mout | grep -w /app:首先利用mount列出当前系统中的挂载信息,然后通过grep -w /app过滤出挂载点为/app的设备信息。awk '{print $1}':通过awk命令取得前一个命令输出的结果的第一个字段,即设备的路径。xargs -n1 -I dev:使用xargs命令,-n1表示每次传递一个参数,-I dev表示将参数替换为dev。这样可以将前一个命令得到的设备路径作为参数传递给后续的命令。dd if=dev of=/opt/update/app.img:最后使用dd命令进行复制操作。if=dev指定输入文件为之前提取的设备路径,of=/opt/update/app.img指定输出文件为/opt/update/app.img。这一步的目的是将挂载点为/app的设备内容复制到指定的镜像文件。
- 使用
df命令查看挂载在/app目录下的文件系统信息,并通过grep过滤出包含/app的行。
df /app | grep -w "/app"
df /app:使用df命令查看挂载在/app目录下的文件系统信息。这将显示/app所在的文件系统的使用情况,包括磁盘空间、使用量等。grep -w "/app":通过grep命令过滤包含/app的行。-w选项表示只匹配整个单词,以确保只匹配到/app而不是类似于/appdata的字符串。
- 查找已挂载到
/app目录的ext4文件系统信息。
mount | grep "on /app type ext4"
mount:列出当前系统中的挂载信息。grep "on /app type ext4":通过grep过滤包含 "on /app type ext4" 的行,即筛选出已经挂载到/app目录的ext4文件系统的信息。
- 查找 /app 目录挂载的 ext4 文件系统信息。
cat /etc/mtab | grep "/app ext4"
cat /etc/mtab:/etc/mtab是一个包含当前已挂载文件系统信息的文件。cat命令用于将其内容显示在终端上。grep "/app ext4":通过grep过滤包含 "/app ext4" 的行,即筛选出与/app目录挂载到 ext4 文件系统的信息。
- 列出当前进程中与 /app 相关的挂载信息。
cat /proc/self/mounts | grep /app
cat /proc/self/mounts:/proc/self/mounts是一个特殊的文件,包含了当前进程的挂载信息。cat命令用于显示将其内容显示在终端上。grep /app:通过grep过滤包含 "/app" 的行,即筛选出与/app相关的挂载信息。
- 将
/app文件系统重新挂载为可写模式。
mount -o remount,rw /app
mount:是用于挂载文件系统的命令。-o remount,rw:通过-o选项指定挂载选项,remount表示重新挂载,rw表示可读写(read-write)模式。/app是指定的文件系统,这里表示/app目录。
Warning
df 主要关注文件系统的磁盘空间使用情况。
mount 提供了有关有关文件系统挂载点的详细信息,包含文件系统类型、挂载点和其他选项。
/etc/mtab 文件是一个记录已挂载文件系统信息的静态文件,cat /etc/mtab 会显示其中的内容。在某些系统上,/etc/mtab 可能是一个符号链接,指向 /proc/self/mounts,它是一个虚拟文件,提供了一个与 cat /etc/mtab 相似的信息。
- 终止与
/app相关的进程。
ps -ef | grep /app | grep -v grep | awk '{print $2}' | xargs -n1 -I {} sudo kill -9 {}
ps -ef:列出系统上所有进程的详细信息。grep /app:通过grep过滤包含/app的行,筛选出于/app相关的进程。grep -v grep:通过grep -v grep排除掉 grep 自身的进程,以确保只匹配到实际与/app相关的进程。awk '{print $2}:通过awk取得进程列表中的第二行,即进程 ID。xargs -n1 -I {}:使用xargs将进程 ID 传递给后续的命令,-n1表示每次传递一个参数,-I {}表示将参数替换为{}。sudo kill -9 {}使用sudo kill -9命令终止指定进程 ID 的进程。
- 显示指定进程打开的文件列表。
lsof -p PID
lsof:是一个用于列出打开文件的工具,它显示当前系统上进程所打开的文件、目录和网络连接等信息。-p PID:通过-p选项指定要列出文件信息的进程 ID(PID)。
- 关闭正在使用
/app目录的任何进程。
fuser -ck /app
fuser:是用于查找和向用户显示指定文件或目录的进程的命令。-ck:这两个选项的组合的含义如下:-c:以进程 ID 的形式显示结果。-k:向相关的进程发送信号以关闭它们。
/app:是指定的文件或目录,这里表示/app目录。
- 列出带有 FOTA 字符串的进程的优先级、进程 ID 和进程名。
ps ax -o nice,pid,comm | grep FOTA
ps ax:使用ps命令显示系统上所有进程的信息。-o nice,pid,comm:通过-o选项指定输出的列,即显示优先级(nice 值)、进程 ID(pid)和进程名(comm)。
grep FOTA:通过grep过滤出包含 "FOTA" 字符串的行,即筛选出带有 "FOTA" 字符串的进程。
- 在 systemd 系统上禁用 motionwise 服务的自启动。
systemctl disable motionwise
systemctl:用于检查和控制系统服务的命令。disable:表示禁用一个服务,即阻止它在系统启动时自启动。motionwise:需要禁用的服务的名称。
- 筛选处于监听状态的网络连接。
netstat -anlt |grep LISTEN
netstat:是一个用于显示网络连接、路由表和接口等信息的命令。-anlt:是 netstat 命令的一组选项:-a:显示所有连接和监听中的套接字。-n:以数字形式显示地址和端口。-l:仅显示监听中的套接字。-t:仅显示 TCP 连接。
l:是管道符,将netstat的输出传递给下一个命令。grep LISTEN:通过grep命令过滤出包含 "LISTEN" 的行,即筛选处于监听状态的连接。
- 拒绝发送的 IGMP 协议数据包。
iptables -A OUTPUT -p igmp -j DROP
iptables:是一个用于配置 Linux 内核防火墙的工具。-A OUTPUT:表示将规则添加到 OUTPUT 链,即出站数据流。-p igmp:指定协议类型为 IGMP。-j DROP:表示对匹配的数据包执行 DROP 操作,即拒绝该数据包。
Warning
如果要确保规则在系统重启后仍然生效,你可能需要将规则保存到防火墙配置中。
- 拒绝发送的 TCP RST 数据包。
iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
iptables:是一个用于配置 Linux 内核防火墙规则的工具。-A OUTPUT:表示将规则添加到 OUTPUT 链,即出站数据流。-p tcp:指定协议类型为 TCP。--tcp-flags RST RST:用于匹配 TCP 标志中的 RST(复位)标志。-j DROP:表示对匹配的数据包执行 DROP 操作,即拒绝该数据包。
- 通过
sysctl修改内核套接字接收缓冲区的最大大小。
sysctl -w net.core.rmem_max=17039360
sysctl:是用于在运行时动态地修改内核参数的命令。-w:表示写入操作,用于设置指定内核参数的值。net.core.rmem_max=17039360:是指要修改的内核参数和设置的值。在这里,net.core.rmem_max是控制套接字接收缓冲区最大大小的内核参数,而17039360是将其设置的值,表示字节的数量。
- 每隔一秒显示一次系统中关于 UDP 协议的统计信息。
watch -n 1 netstat -s udp
watch -n 1:watch命令用于周期性地运行一个命令并显示结果。-n 1表示每隔一秒刷新一次。netstat -s udp:netstat是一个用于显示网络连接、路由表和接口等信息的命令。-s udp选项表示显示有关 UDP 协议的统计信息。